# 使用官方Go镜像作为构建环境
FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS builder

# 设置工作目录
WORKDIR /app

# 复制go mod和sum文件
COPY go.mod go.sum ./

# 下载依赖
RUN go mod download

# 复制源代码
COPY . .

# 构建应用
RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o toolset ./cmd/toolset

# 使用空镜像
FROM scratch

# 安装ca-certificates以支持HTTPS请求
# RUN apk --no-cache add ca-certificates

# 创建非root用户
# RUN adduser -D -s /bin/sh appuser

# 设置工作目录
WORKDIR /app

# 从构建阶段复制二进制文件
COPY --from=builder /app/toolset .

# 复制配置和密钥文件
COPY --from=builder /app/config ./config

# 更改文件所有权
# RUN chown -R appuser:appuser /app

# 切换到非root用户
# USER appuser

# 暴露端口
EXPOSE 8080

# 运行应用
CMD ["./toolset"]

# 本地构建
# docker build -t toolset:latest .  

# docker buildx build --platform linux/arm/v7 -t toolset:latest --load . 

# 推送到Docker Hub
# docker buildx build --platform linux/arm64,linux/amd64 -t username/toolset:latest --push .

# 推送armv7版本
# docker buildx build --platform linux/arm/v7 -t username/toolset:armv7 --push .